#pragma once
#include <boost/beast/http.hpp>
#include <boost/beast.hpp>
#include <boost/asio.hpp>
#include <memory>
#include <json/json.h>
#include <json/value.h>
#include <json/reader.h>
enum ErrorCodes {
	Success = 0,		//JSO你可以解析成功
	Error_Json = 1001,  //Json解析错误



	//都是可以根据处理的业务，返回给客户端的消息，客户端会由于信号机制，精准的把对应的回复发送到对应的模块经行处理，不用考虑通用新
	RPCFailed = 1002,  //RPC请求错误
	VarifyExpired = 1003,	//验证码过期
	VarifyCodeErr = 1004,	//验证码错误
	UserExist=1005,			//用户已经存在
	PasswdInvalid = 1006
};

namespace beast = boost::beast;															// from <boost/beast.hpp>
namespace http = beast::http;															// from <boost/beast/http.hpp>
namespace net = boost::asio;															// from <boost/asio.hpp>
using tcp = boost::asio::ip::tcp;														// from <boost/asio/ip/tcp.hpp>

class ConfigMgr;
extern ConfigMgr gCfgMgr;

// Defer类
class Defer {
public:
	// 接受一个lambda表达式或者函数指针
	Defer(std::function<void()> func) : func_(func) {}

	// 析构函数中执行传入的函数
	~Defer() {
		func_();
	}

private:
	std::function<void()> func_;
};

#define CODEPREFIX  "code_"